#coding:utf-8
import re
class Achitable():
    def __init__(self,**params):
        self.mul_ls = params['mul_ls']
        self.conf = params['conf']
        self.achivement_sec = self.conf['achivement_sec']

    def inside_for_dispose_get_get_use(self,standard,data,key):
        NeedMatch = self.achivement_sec[standard][0]
        NoMatch = self.achivement_sec[standard][1]
        tt_ls = []
        for num, value in enumerate(data['value']):
            if re.search(NeedMatch, value) == None or re.search(NoMatch, value) != None:
                continue
            tt_ls.append(num)

        tt_dict = {
            'value': [],
            'x': [],
            'y': [],
            'pre': [],
            'prior':[]
        }
        tt_dict_key = ['value', 'x', 'y','prior']
        for num in tt_ls:
            for tt_dict_keyi in tt_dict_key:
                tt_dict[tt_dict_keyi].append(data[tt_dict_keyi][num])
            tt_dict['pre'].append(key)
        return tt_dict

    #表内根据配置取相关数据
    def dispose_get(self,mul_ls):
        out_ls = []
        key_ls = list(self.achivement_sec.keys())
        for table_dict in mul_ls:
            now_dict = {}
            for key in table_dict:
                standard = table_dict[key]['standard'][0]
                if re.search('中标金额',standard):
                    obj = re.search('[万亿%]',standard)
                    if obj:
                        table_dict[key]['value'] = [i+'➼'+obj.group() for i in table_dict[key]['value']]
                        standard = standard.split('（')[0]
                #根据需求键取值
                if standard not in key_ls:
                    continue
                #根据配置取值
                tt_data = self.inside_for_dispose_get_get_use(standard,table_dict[key],key)
                if tt_data['value'] == []:
                    continue

                if standard not in now_dict:
                    now_dict.update({standard:tt_data})
                else:
                    tt_dict_key = ['value', 'x', 'y','pre','prior']
                    for tt_dict_keyi in tt_dict_key:
                        now_dict[standard][tt_dict_keyi] = now_dict[standard][tt_dict_keyi] + tt_data[tt_dict_keyi]
            out_ls.append(now_dict)
        return out_ls

    def inside_for_solo_concat(self,table_dict):
        out_ls = []
        match_key = ['第一中标候选人','公司名称','中标金额','项目负责人','项目负责人资格','标段','项目负责人证书编号']
        for key in table_dict:
            ls_len = len(table_dict[key]['value'])
            if key not in match_key:
                continue
            while ls_len > len(out_ls):
                out_ls.append({i:'' for i in match_key[1:]})
            use_key = '公司名称' if key == '第一中标候选人' else key
            for num,num_data in enumerate(table_dict[key]['value']):
                out_ls[num][use_key] = num_data
                if use_key == '公司名称':
                    out_ls[num]['prior'] = table_dict[key]['prior'][0]

        return out_ls

    #根据优先级规则删除数据
    def prior_del(self,table_dict):
        out_dict = {}
        for key in table_dict:
            dis_num = len(set(table_dict[key]['prior']))
            if dis_num == 1:
                out_dict[key] = table_dict[key]
            else:
                prior_ls = ['A','B','C']
                for prior_lsi in prior_ls:
                    if prior_lsi in table_dict[key]['prior']:
                        prior_ls_idex = [num if num_data == prior_lsi else -1 for num,num_data in enumerate(table_dict[key]['prior'])]
                        use_key_ls = ['value','x','y','prior','pre']
                        new_dict = {i:[] for i in use_key_ls}
                        for num in prior_ls_idex:
                            if num != -1:
                                for use_key_lsi in use_key_ls:
                                    new_dict[use_key_lsi].append(table_dict[key][use_key_lsi][num])
                        out_dict[key] = new_dict
                        break
        return out_dict
    #单表根据数量一对一的组合并取值
    def solo_concat(self,filter_data):
        out_ls = []
        for table_dict in filter_data:
            table_dict = self.prior_del(table_dict)
            out_ls.append(self.inside_for_solo_concat(table_dict))
        return out_ls

    #多表数据根据公司名称进行组合
    def mul_concat_company(self,solo_concat_data):
        out_dict = {'company':[],
                    'no_company':[]
                    }
        tt_dict = {}
        for table_ls in solo_concat_data:
            for main_data in table_ls:
                if main_data['公司名称'] != '':
                    if main_data['公司名称'] not in tt_dict:
                        tt_dict[main_data['公司名称']] = [main_data]
                    else:
                        tt_dict[main_data['公司名称']].append(main_data)
                else:
                    out_dict['no_company'].append(main_data)
        match_key = ['第一中标候选人', '公司名称', '中标金额', '项目负责人', '项目负责人资格', '标段', '项目负责人证书编号','prior']
        for company_name in tt_dict:
            ttt_dict = {i: '' for i in match_key[1:]}
            for di in tt_dict[company_name]:
                for ttt_key in di:
                    if ttt_dict[ttt_key] == '':
                        ttt_dict[ttt_key] = di[ttt_key]
                    elif ttt_key == 'prior':
                        if di[ttt_key] == 'A' or ttt_dict[ttt_key] == 'C':
                            ttt_dict[ttt_key] = di[ttt_key]
            out_dict['company'].append(ttt_dict)
        return out_dict

    #多表将没有公司名称，根据顺序一一组合
    def mul_concat_no_company(self,mul_concat_company_data):
        out_ls = []
        company_ls = mul_concat_company_data['company']
        company_no_ls = mul_concat_company_data['no_company']
        step = len(company_ls)
        for num,num_data in enumerate(company_ls):
            main_data = num_data
            end = num
            while end < len(company_no_ls):
                now_data = company_no_ls[end]
                for now_key in now_data:
                    if main_data[now_key] == '' and now_data[now_key] != '':
                        main_data[now_key] = now_data[now_key]
                end += step
            out_ls.append(main_data)
        return out_ls

    def inside_for_get_end_data_clear(self,value,key):
        if key in self.conf['clear_func']:
            value = self.conf['clear_func'][key](value)
            return value
        else:
            return value

    #根据优先级取最终数据
    def prior_data_get(self,mul_concat_company_no_data):
        out_dict = {
            'company':[],
            'no_company':mul_concat_company_no_data['no_company']
        }
        max_level = 'C'
        for data in mul_concat_company_no_data['company']:
            if data['prior'] < max_level:
                max_level = data['prior']
        for data in mul_concat_company_no_data['company']:
            if data['prior'] == max_level:
                out_dict['company'].append(data)
        return out_dict

    #最终获取数据与清洗
    def get_end_data(self,mul_concat_company_no_data):

        new_dict = {}
        for data in mul_concat_company_no_data:
            if data['标段'] not in new_dict:
                new_dict[data['标段']] = [data]
            else:
                new_dict[data['标段']].append(data)
        out_dict = {
            '第一中标候选人': [],
            '第二中标候选人': [],
            '第三中标候选人': []
        }

        for key in new_dict:
            use_ls = new_dict[key]
            map = {0:'第一中标候选人',
               1:'第二中标候选人',
               2:'第三中标候选人'}
            for num,num_data in enumerate(use_ls[:3]):
                sort = map[num]
                use_dict = {}
                for key in num_data:
                    use_dict[key] = self.inside_for_get_end_data_clear(num_data[key],key)
                out_dict[sort].append(use_dict)
        key_ls = ['公司名称', '中标金额', '项目负责人', '项目负责人资格', '标段', '项目负责人证书编号']
        for i in out_dict:
            for ii in out_dict[i]:
                for iii in key_ls:
                    if iii not in ii:
                        if iii != '中标金额':
                            ii[iii] = ''
                        else:
                            ii[iii] = 0
        return out_dict

    def main(self):

        filter_data = self.dispose_get(self.mul_ls)
        solo_concat_data = self.solo_concat(filter_data)
        mul_concat_company_data = self.mul_concat_company(solo_concat_data)
        mul_concat_company_data = self.prior_data_get(mul_concat_company_data)
        mul_concat_company_no_data = self.mul_concat_no_company(mul_concat_company_data)
        end_data = self.get_end_data(mul_concat_company_no_data)
        return end_data

if __name__ == '__main__':
    from common import *
    from conf import Conf
    with Db('dispose') as conn:
        cursor = conn.cursor()
        params = {'conn':conn,
                  'cursor':cursor
                  }
        conf = Conf(**params).main()
        mul_ls = [{'序号': {'value': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136', '137', ''], 'x': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'y': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69], 'standard': ['序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号'], 'prior': ['B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']}, '投标单位名称': {'value': ['江西盛昌建设工程有限公司', '江西佳欣建设工程有限公司', '江西省城建房屋建筑工程公司', '江西恒之源建设工程有限公司', '湖南盛义建设有限公司', '长禾建设集团（福建）有限公司', '江西明泰建设工程有限公司', '江西赣泽水利水电工程有限公司', '江西海东建设工程有限公司', '江西龙英建设有限公司', '江西腾威建设工程有限公司', '江西省恒泰水利工程有限公司', '江西屹泰建设工程有限公司', '河南浩润水利工程有限公司', '江西华东龙源建设有限公司', '山东海建水利工程有限公司', '江西泰骏建设工程有限公司', '江西国州建设工程有限公司', '江西赣泰水利建筑工程有限公司', '赣州市汇通建设工程有限公司', '南昌市银广厦建筑工程有限公司', '江西盛远建设工程有限公司', '江西五湖建筑工程有限公司', '江西省新兴建设有限公司', '江西鹏达水利建设有限公司', '宜丰永兴水利水电工程建筑有限公司', '江西金业建设工程有限公司', '宇轩建业集团有限公司', '江西鼎盛建筑有限公司', '江西浔鑫建设工程有限公司', '吉安利发工程发展有限公司', '江西国宁建筑工程有限公司', '修水县天成建筑工程有限责任公司', '江西明耀建设工程有限公司', '江西祥润水利建设有限公司', '江西省永捷水利工程有限公司', '江西省连城建筑工程有限公司', '河南景鹏建设工程有限公司', '江西中宸建设工程有限公司', '江西达龙建设工程有限公司', '江西中奋建设工程有限公司', '河南省正航建设工程有限公司', '彭泽县水利水电建筑开发公司', '江西力驰建设工程有限公司', '江西省铁建建设有限公司', '江西峻瑞建设工程有限公司', '江西赣龙水利建设有限公司', '江西中启建设工程有限公司', '福清市融禹水利水电建设工程有限公司', '江西祥华建设有限公司', '九江市和强水利建设开发有限公司', '江西庆丰水利水电工程有限公司', '福建五江水电建设有限公司', '江西渱泰水利工程有限公司', '江西国峰建设工程有限公司', '江西宗豪建设集团有限公司', '上饶市科信水利水电建设工程有限公司', '江西汉超实业有限公司', '江西景盛水利工程有限公司', '浩乔建设集团有限公司', '江西河湖建设工程有限公司', '江西双诚建筑工程有限公司', '赣州三和工程建造有限公司', '江西创宇建设工程有限公司', '江西明鑫建设工程有限公司', '江西遂盛建设有限责任公司', '江西有色水利水电工程有限公司', '江西玲响建设工程有限公司', '江西天丰建设集团有限公司', '吉安吉荣实业工程有限责任公司', '江西天翔建设工程有限公司', '江西旋信建设工程有限公司', '江西中丰建筑工程有限公司', '江西省宜安建设开发有限公司', '江西省共青城永达水利建筑有限公司', '江西恒荣水利工程有限公司', '江西嘉佑建设工程有限公司', '江西省翔瑞建设工程有限公司', '江西荣淼建设工程有限公司', '江西俊威水利水电建筑工程有限公司', '江西乐禹水利建设有限公司', '江西欣丰工程建设有限公司', '江西锦航建设工程有限公司', '江西赣禹工程建设有限公司', '江西省亿达建设工程有限公司', '江西广恩建筑工程有限公司', '江西宏力建设发展有限公司', '万载县安泰水利水电建筑有限公司', '江西祥龙建设工程有限公司', '江西裕航实业有限公司', '江西中煤水利水电有限公司', '吉水县水利水电建筑安装公司', '江西天汇建设工程有限公司', '江西省裕丰水利水电建设有限公司', '江西华象水利水电建设有限公司', '江西泽亿工程技术有限公司', '五方城建集团有限公司', '江西昭萍水利建筑工程有限责任公司', '江西容大水利水电建设工程有限公司', '中水建管国际工程有限公司', '江西干越水电工程建设有限公司', '江西兴辉水利水电工程有限责任公司', '江西赣力水利工程有限公司', '江西建宏建业工程有限公司', '赣州市吉龙水利水电建筑有限公司', '江西东钜建设工程有限公司', '江西中帆建设工程有限公司', '福建中永建设工程有限公司', '河南长锦建设工程有限公司', '江西金丰市政工程建设有限公司', '江西吉安吉鑫水利工程有限公司', '江西沃达建设有限公司', '江西兴邦建设工程有限公司', '江西鸿友建设工程有限公司', '江西裕泽建设有限公司', '江西聚源建设工程有限公司', '进贤县水电建设安装公司', '江西久源建设工程有限公司', '江西瑞耀建设工程有限公司', '江西闽禹建设工程有限公司', '南昌市第四建筑工程有限公司', '江西紫林建设工程有限公司', '江西骏亿建设工程有限公司', '抚州市泽惠水利工程建设有限公司', '宇坤建设集团有限公司', '江西神州建筑工程有限公司', '江西升鹏建设工程有限公司', '江西省赣杰实业有限公司', '江西省卓泓水利建设有限公司', '江西金达建筑工程有限公司', '赣州佳泽建设工程有限公司', '百年建设集团有限公司', '江西省聚成建设有限公司', '江西省荣阳建设工程有限公司', '江西省金力水利工程有限公司', '江西富邦建设有限公司', '宇川建设集团有限公司', ''], 'x': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], 'y': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69], 'standard': ['第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '投标单位', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人', '第一中标候选人'], 'prior': ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C']}}, {'序号': {'value': ['1', '', '2', '3', '', '4', '', '5', '吴书河', '', '', '6', '', '', '7', '', '', '', '8', '', '', '9', '', '', '10', '', '', '11', '', '', '12', '', '', '13', '', '', '14', '', '15', '', '16', '', '', '17', '', '18', '', '19', '20', '', '21', '', '22', '', '', '', '23', '', '', '24', '25', '', '', '26', '', '27', '', '', '28', '29', '', '30', '', ''], 'x': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'y': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], 'standard': ['序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号', '序号'], 'prior': ['B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']}, '投标人名称': {'value': ['江西五湖建筑工程有限公司', '赣236191970808', '河南景鹏建设工程有限公司', '江西干越水电工程建设有限公司', '吴永', '江西国宁建筑工程有限公司', '赣236141537741', '江西兴邦建设工程有限公司', '△', '赣236141541765', '赣236141541765', '江西盛昌建设工程有限公司', '张驰', '赣236191901890', '江西金丰市政工程建设有限公司', '廖欢', '赣236171800521', '赣236171800521', '赣州三和工程建造有限公司', '王浩林', '赣236171803629', '江西赣禹工程建设有限公司', '周仕', '赣236161763938', '江西佳欣建设工程有限公司', '邹前堡', '赣236161657406', '江西峻瑞建设工程有限公司', '陈亮', '赣236161761063', '江西鼎盛建筑有限公司', '邱芳晓', '赣236171802432', '江西景盛水利工程有限公司', '赣236191972288', '赣236191972288', '江西天汇建设工程有限公司', '赣236161657438', '江西玲响建设工程有限公司', '赣236131320623', '南昌市银广厦建筑工程有限公司', '赣236161763119', '赣236161763119', '江西广恩建筑工程有限公司', '赣236171800207', '江西国峰建设工程有限公司', '赣236141537718', '江西东钜建设工程有限公司', '江西中煤水利水电有限公司', '赣236161657205', '江西省荣阳建设工程有限公司', '何文辉', '江西恒之源建设工程有限公司', '王海琴', '赣236191903168', '赣236191903168', '江西升鹏建设工程有限公司', '赣236161763684', '赣236161763684', '江西祥润水利建设有限公司', '江西省聚成建设有限公司', '俞宇祥', '赣236171971379', '江西达龙建设工程有限公司', '赣236161653221', '江西鸿友建设工程有限公司', '赣236171800530', '赣236171800530', '江西省卓泓水利建设有限公司', '江西浔鑫建设工程有限公司', '赣236141426346', '江西骏亿建设工程有限公司', '赣236161658337', '赣236161658337'], 'x': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'y': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], 'standard': ['投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位', '投标单位'], 'prior': ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C']}, '项目负责人（建造师）': {'value': ['淦珑', '△', '王俊丽', '吴永', '△', '张晶', '△', '吴书河', '△', '△', '△', '张驰', '△', '△', '廖欢', '△', '△', '△', '王浩林', '△', '△', '周仕', '△', '△', '邹前堡', '△', '△', '陈亮', '△', '△', '邱芳晓', '△', '△', '李雪兵', '△', '△', '陈玉', '△', '魏俊文', '△', '文凯', '△', '△', '曾虎', '△', '刘明超', '△', '杨宇博', '程明华', '△', '何文辉', '△', '王海琴', '△', '△', '△', '诸小伟', '△', '△', '涂尚明', '俞宇祥', '△', '△', '陈峰', '△', '包厚勇', '△', '△', '谢晓斌', '叶涵', '△', '夏金明', '△', '△'], 'x': [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'y': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], 'standard': ['项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人', '项目负责人'], 'prior': ['B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']}, '注册证号': {'value': ['通过'], 'x': [4], 'y': [0], 'standard': ['项目负责人证书编号'], 'prior': ['B']}}, {'第一排序人': {'value': ['江西五湖建筑工程有限公司'], 'x': [1], 'y': [0], 'standard': ['第一中标候选人'], 'prior': ['A']}, '投标报价': {'value': ['9611037.61', '9609046.98', '9607086.00'], 'x': [1, 1, 1], 'y': [1, 4, 7], 'standard': ['中标金额', '中标金额', '中标金额'], 'prior': ['B', 'B', 'B']}, '承诺工期': {'value': ['365日历天', '365日历天', '365日历天'], 'x': [3, 3, 3], 'y': [1, 4, 7], 'standard': ['工期', '工期', '工期'], 'prior': ['B', 'B', 'B']}, '项目负责人': {'value': ['淦珑', '王俊丽', '吴永'], 'x': [1, 1, 1], 'y': [2, 5, 8], 'standard': ['项目负责人', '项目负责人', '项目负责人'], 'prior': ['B', 'B', 'B']}, '注册证号': {'value': ['赣236191970808', '豫241161694880', '赣236181658219'], 'x': [3, 3, 3], 'y': [2, 5, 8], 'standard': ['项目负责人证书编号', '项目负责人证书编号', '项目负责人证书编号'], 'prior': ['B', 'B', 'B']}}]
        params = {
                'mul_ls':mul_ls,
                'conf':conf
                }
        end_data = Achitable(**params).main()